Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 21 MDI-Anwendungen
  gp 21.1 Das MDI-Hauptfenster
  gp 21.2 Die Subfenster
  gp 21.3 Zugriff auf die Subfenster
    gp 21.3.1 Zugriff auf das aktive Subfenster
    gp 21.3.2 Zugriff auf die Subfenster eines bestimmten Typs
  gp 21.4 Das Menü in einer MDI-Anwendung
    gp 21.4.1 Subfenster anordnen
    gp 21.4.2 Subfenster mit eigenen Menüs
  gp 21.5 Symbol- und Statusleiste des Subfensters
  gp 21.6 Die Liste der geöffneten untergeordneten Fenster
  gp 21.7 Beispiel einer MDI-Anwendung


Galileo Computing

21.7 Beispiel einer MDI-Anwenduntoptop

Das folgende Beispiel enthält einige der vorher besprochenen Elemente. Der Code beschränkt sich auf das Wesentliche und weist über die MDI-typischen Anweisungen keine weiteren Funktionalitäten auf.

Das Hauptmenü enthält zwei Menüelemente: Datei und Fenster. Datei hat ein Untermenü mit den beiden Punkten Neu und Beenden. Fenster ist nach dem Start der Anwendung deaktiviert und wird erst beim Öffnen des ersten Subfensters aktiviert. Falls zur Laufzeit alle Subfenster geschlossen werden, muss Fenster auch wieder deaktiviert werden. Wir erreichen das, indem wir den dazu erforderlichen Code bei Auslösung des Ereignisses MdiChildActivate, das nicht nur bei der Aktivierung, sondern zusätzlich auch beim Schließen eines Subfensters auftritt, ausführen. Im Ereignishandler wird die Eigenschaft ActiveMdiChild überprüft: Sie liefert null, wenn kein Subfenster geöffnet ist.

Das Schließen des MDI-Haupt- und der MDI-Subfenster erfordert die ausdrückliche Bestätigung des Anwenders. Das ist in den Ereignissen FormClosing codiert. Beachten Sie, dass bei einem vom Hauptfenster eingeleiteten Schließvorgang ein geöffnetes Subfenster in jedem Fall noch die Möglichkeit hat, das Schließen zu verhindern.

Das Subfenster hat eine Menüleiste mit den Elementen Datei und Bearbeiten. Die beiden Datei-Menüs sollen zur Laufzeit in der Weise zusammengeführt werden, dass das des Subfensters das des Hauptfensters ergänzt. Darüber hinaus sollen die einzelnen Menüelemente nicht nur dem Untermenü angehängt, sondern konventionsgemäß platziert werden, d.  h. zuerst Neu, dann Speichern und Speichern unter und zum Schluss Beenden. Erreicht wird das durch die entsprechenden Einstellungen im Eigenschaftsfenster.

Das Menü Bearbeiten, das zur Menüleiste des Subfensters gehört, soll sich zwischen Datei und Fenster des Hauptfensters positionieren. Auch das wird durch die dazu erforderlichen Eigenschaftseinstellungen im Eigenschaftsfenster bewirkt.

Einen Nebeneffekt werden Sie feststellen, wenn Ihr Subfenster eine Menüleiste hat: Nach dem Zusammenführen wird im Subfenster auch dann die Menüleiste angezeigt, wenn sie aufgrund des Zusammenführens leer ist. Hier hilft nur eine Maßnahme: Legen Sie für das ToolStripMenu-Objekt Visible=true fest.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 21.3   Ausgabe des Beispiels »MdiDemo«


// --------------------------------------------------------------
// Beispiel: ...\Kapitel 21\MdiDemo
// --------------------------------------------------------------
public partial class Form1 : Form {
  private int documentCounter;
  // ein neues untergeordnetes Fenster anzeigen
  private void menuNeu_Click(object sender, EventArgs e) {
    Document frm = new Document();
    frm.MdiParent = this;
    frm.Text = "Dokument " + ++documentCounter;
    frm.Show();
    menuFenster.Enabled = true;
  }
  private void Form1_MdiChildActivate(object sender, EventArgs e) {
    // wenn kein Subfenster aktiv ist, das Menü 'Fenster' deaktivieren
    if (this.ActiveMdiChild == null)
      this.menuFenster.Enabled = false;
  }
  // Diese Methode ist mit den Click-Ereignissen der Menüelemente 
  // 'überlappend', 'horizontal' und 'vertikal' verknüpft
  private void ArrangeSubWindows(object sender, EventArgs e) {
    if (sender == menuUeberlappend)
      this.LayoutMdi(MdiLayout.Cascade);
    else if (sender == menuUntereinander)
      this.LayoutMdi(MdiLayout.TileHorizontal);
    else
      this.LayoutMdi(MdiLayout.TileVertical);
  }
  // Bestätigen lassen, ob die Anwendung geschlossen werden soll
  private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
    string strMeldung = "Wollen Sie die Anwendung beenden?";
    DialogResult dr = MessageBox.Show(strMeldung, 
       Application.ProductName, MessageBoxButtons.YesNo);
    if (dr == DialogResult.No)
      e.Cancel = true;
  }
}

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de